﻿using System;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using bolsatrabajo.Dominio.NHIBERNATE;
using bolsatrabajo.Persistencia.NHIBERNATE;

namespace bolsatrabajo.Pruebas.NHIBERNATE
{
    [TestFixture]
    public class pruebaAvisoNH
    {
        [Test]
        public void TestCrearAviso()
        {
            AvisoNH avisoNH = new AvisoNH(); // Instanciando la clase a probar
            // Creando un objeto en memoria para luego persistirlo en la BD
            Aviso avisoACrear = new Aviso();
            avisoACrear.Titulo = "SE NECESITAN TECNICOS";
            avisoACrear.DescripcionEmpresa = "EMPRESA QUE HACE BALANZAS";
            avisoACrear.DescripcionPuesto = "TECNICO ELECTRICISTAS";
            OfertanteNH existeofertante = new OfertanteNH();
            Ofertante ofertanteexiste = existeofertante.Obtener("kathyg@garciaservice.com");
            avisoACrear.Ofertante = ofertanteexiste;
            avisoACrear.FechaVigencia = DateTime.Parse("30/07/2011");
            avisoACrear.FechaRegistro = DateTime.Parse("02/06/2011");
            avisoACrear.Categoria = "ENVASADORA";
            Aviso avisoCreado = null; // Declarando el objeto que contendrá el registro creado en la BD
            Assert.DoesNotThrow(delegate // Asegurando que el "cuerpo" no lance excepciones
            {
                avisoCreado = avisoNH.Crear(avisoACrear); // Ejecutando el método de creación
            });
            Assert.AreEqual(avisoACrear.Id_Aviso, avisoCreado.Id_Aviso); // Asegurando que el código del alumno ya creado sea igual al código del alumno en memoria que solicité crear
        }
        [Test]
        public void TestListarAvisosxTitulo()
        {
            String destitulo = "SE NECESITAN TECNICOS";
            AvisoNH listaNH = new AvisoNH();
            ICollection<Aviso> listaobtenida = null;
            Assert.DoesNotThrow(delegate
            {
                listaobtenida = listaNH.ListarAvisos(destitulo);
            });
            //CollectionAssert.IsNotEmpty(listaobtenida);
            Assert.Greater(listaobtenida.Count, 0);
            foreach (Aviso o in listaobtenida)
            {
                Console.WriteLine(o.DescripcionEmpresa + "|" + o.Id_Aviso + "|" + o.Titulo);
            }
        }

        [Test]
        public void TestListarAvisosxOferntante()
        {
            String correodeofertante = "admin@hgservice.com"; //admin@hgservice.com
            AvisoNH listaNH = new AvisoNH();
            ICollection<Aviso> listaobtenida = null;
            Assert.DoesNotThrow(delegate
            {
                listaobtenida = listaNH.ListarAvisosxOfertante(correodeofertante);
            });
            //CollectionAssert.IsNotEmpty(listaobtenida);
            Assert.Greater(listaobtenida.Count, 0);
            foreach (Aviso o in listaobtenida)
            {
                Console.WriteLine(o.DescripcionEmpresa + "|" + o.Id_Aviso + "|" + o.Titulo + "|" + o.Ofertante.RazonSocial);
            }
        }
    }
}